package com.shiva.oms.logview.api.model;

import java.util.HashMap;

public enum TableColumns {

    ID("ID", "序号", 0), //
    TIME("日期时间", "date", 1), //
    // DELTA("Delta", 2), //
    LEVEL("级别", "level", 2), //
    CLASS("类名", "clazz", 3), //
    METHOD("方法", "method", 4), //
    MESSAGE("消息内容", "message", 5),
    MARK("M", "marked", 6), //
    THREAD("Thread", "thread", 7), //
    NOTE("Enter a Note", "note", 9), //
    FILE("File", "file", 10), //
    LINE("Line", "line", 11), //
    NDC("NDC", "ndc", 12), //
    PROPERTIES("Properties", "properties", 13), //
    LOGGER_NAME("Logger", "loggerName", 14), //
    LOG_SOURCE("Source", "logSource", 15);//

  private static final HashMap<Integer, TableColumns> map = new HashMap<>();

  static {
    TableColumns[] values = TableColumns.values();
    for (TableColumns tableColumns : values) {
      map.put(tableColumns.getColumn(), tableColumns);
    }
  }

//  public static final TableColumns[] JUL_COLUMNS = {TableColumns.CLASS,//
//    TableColumns.ID,//
//    TableColumns.LEVEL,//
//    TableColumns.MARK,//
//    TableColumns.MESSAGE,//
//    TableColumns.METHOD,//
//    TableColumns.NOTE,//
//    TableColumns.THREAD,//
//    TableColumns.TIME //
//
//  };
//
//  public static final TableColumns[] ALL_WITHOUT_LOG_SOURCE = {TableColumns.CLASS,//
//    TableColumns.ID, //
//    TableColumns.TIME, //
//    TableColumns.LEVEL, //
//    TableColumns.MESSAGE, //
//    TableColumns.CLASS, //
//    TableColumns.METHOD, //
//    TableColumns.THREAD, //
//    TableColumns.MARK, //
//    TableColumns.NOTE, //
//    TableColumns.FILE, //
//    TableColumns.LINE, //
//    TableColumns.NDC, //
//    TableColumns.PROPERTIES, //
//    TableColumns.LOGGER_NAME //
//  };

    private final String headName;
    private final String attrName;
    private final int column;

    TableColumns(String headName, String attrName, int column) {
        this.headName = headName;
        this.attrName = attrName;
        this.column = column;
    }

    public String getHeadName() {
        return headName;
    }

    public String getAttrName() {
        return attrName;
    }

    public int getColumn() {
        return column;
    }

    public static TableColumns getColumnById(int id) {
        return map.get(id);
    }
}
